Xbasic

SQL::QueryExecute Method

Syntax

Result_Flag as L = Execute(SQLConnection as [SQL::Connection | C] [, Arguments as [SQL::Arguments | C]])

Arguments

Result_Flag

TRUE (.T.) if the operation was successful; otherwise FALSE (.F.).

SQLConnectionSQL::ConnectionCharacter

A connection string or SQL::Connection object with a defined .ConnectionString property.

ArgumentsSQL::ArgumentsCharacter

A SQL::Arguments object or XML property of a SQL::Arguments object.

Returns

Result_FlagLogical

Returns .t. if the operation was successful. Otherwise, .f..

Description

Execute the current statement using the current or passed connection. Optionally providing argument values as an object or as XML. Note: Argument values are merged with those already set on the query.

Discussion

The .Execute() method retrieves data and populates a SQL::ResultSet object. It connects to the back-end database using the information in the SQL::Connection::ConnectionString property or in the ConnectString string, then executes the current SQL statement in the SQL::Query.SQLStatement property. Note : If you set the SQL::Query object's ResolveColumnTables property prior to calling SQL::Query::Execute(), the columns resolved will now have valid values for MaximumActualLength . Internally, SQL::Query now calls UpdateStatistics()for each table definition it retrieves and populates the ColumnInfo entries.

Example

The following code was run in the Interactive Window.

dim qry as SQL::Query
dim conn as SQL::Connection
dim connString as C
connString = "{A5API='Access', FileName='c:\program files\a5v7\mdbfiles\alphasports.mdb'}"
? conn.open(connString)
= .T.
? qry.parse("Select * from Customer")
= .T.
? qry.Execute(conn)
= .T.

The following code shows how to use the various argument alternatives.

dim c as SQL::connection
dim q as SQL::query
dim a as SQL::arguments
dim axml as c
a.add("state", "CA")
axml = a.xml
cs = "{A5API=Access,FileName='c:\northwind.mdb',UserName='Admin'}"
? c.open(cs)
? q.parse("select * from customers where region = :state")
? q.execute(c, a)          ' Open Connection and arguments object
? q.execute(c, axml)       ' Open Connection and XML version of arguments
? q.execute(cs, a)         ' Connection String and arguments object
? q.execute(cs, axml)      ' Connection string and XML version of arguments
? If you assign the connection, you don't need to pass it.
q.connection = c
? q.execute(a)             ' Arguments object
? q.execute(axml)          ' XML version of arguments
? Adding the argument to the query directly works as well.
q.arguments.add("state", "CA")
? q.execute()
? q.execute(c)
? q.execute(cs)

The following code shows the use of .ResolveColumnTables.

dim c as SQL::connection
dim q as SQL::query
c.open("{A5API='Access',A5Syntax='Access',FileName='c:\northwind.mdb',UserName='Admin'}")
q.parse("select * from customers")
q.ResolveColumnTables = .t.
q.execute(c)
q.resultset.sizetofit = .t.

This example retrieves column specifications, then resizes the fields to fit the data.

dim c as SQL::connection
dim q as SQL::query
? c.open("{A5API='Access',A5Syntax='Access',FileName='c:\northwind.mdb',UserName='Admin'}")
= .T.
? q.parse("select * from customers")
= .T.
? q.execute(c)
= .T.
? q.resultset.dbfrowsyntax
= CUSTOMERID,C,5,0
COMPANYNAME,C,40,0
CONTACTNAME,C,30,0
CONTACTTITLE,C,30,0
ADDRESS,C,60,0
CITY,C,15,0
REGION,C,15,0
POSTALCODE,C,10,0
COUNTRY,C,15,0
PHONE,C,24,0
FAX,C,24,0
q.ResolveColumnTables = .t.
? q.execute(c)
= .T.
? q.resultset.dbfrowsyntax
= CUSTOMERID,C,5,0
COMPANYNAME,C,40,0
CONTACTNAME,C,30,0
CONTACTTITLE,C,30,0
ADDRESS,C,60,0
CITY,C,15,0
REGION,C,15,0
POSTALCODE,C,10,0
COUNTRY,C,15,0
PHONE,C,24,0
FAX,C,24,0
q.resultset.sizetofit = .t.
? q.resultset.dbfRowsyntax
= CUSTOMERID,C,5,0
COMPANYNAME,C,38,0
CONTACTNAME,C,23,0
CONTACTTITLE,C,30,0
ADDRESS,C,46,0
CITY,C,15,0
REGION,C,13,0
POSTALCODE,C,9,0
COUNTRY,C,11,0
PHONE,C,17,0
FAX,C,17,0